// --------------------------------------------------------------------------------------------------------------------
// <copyright file="MetricTransaction.cs" company="">
//   
// </copyright>
// <summary>
//   The metric transaction.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace XRay.Library.Contracts
{
    #region

    using System;

    #endregion

    /// <summary>
    ///     The metric transaction.
    /// </summary>
    public class MetricTransaction
    {
        #region Public Properties

        /// <summary>
        ///     Gets or sets the access type.
        /// </summary>
        public AccessTypeEnum AccessType { get; set; }

        /// <summary>
        ///     Gets or sets the anonymous authorization error.
        /// </summary>
        public long AnonymousAuthorizationError { get; set; }

        /// <summary>
        ///     Gets or sets the anonymous client other error.
        /// </summary>
        public long AnonymousClientOtherError { get; set; }

        /// <summary>
        ///     Gets or sets the anonymous client timeout error.
        /// </summary>
        public long AnonymousClientTimeoutError { get; set; }

        /// <summary>
        ///     Gets or sets the anonymous network error.
        /// </summary>
        public long AnonymousNetworkError { get; set; }

        /// <summary>
        ///     Gets or sets the anonymous server other error.
        /// </summary>
        public long AnonymousServerOtherError { get; set; }

        /// <summary>
        ///     Gets or sets the anonymous server timeout error.
        /// </summary>
        public long AnonymousServerTimeoutError { get; set; }

        /// <summary>
        ///     Gets or sets the anonymous success.
        /// </summary>
        public long AnonymousSuccess { get; set; }

        /// <summary>
        ///     Gets or sets the anonymous throttling error.
        /// </summary>
        public long AnonymousThrottlingError { get; set; }

        /// <summary>
        ///     Gets or sets the authorization error.
        /// </summary>
        public long AuthorizationError { get; set; }

        /// <summary>
        ///     Gets or sets the availability.
        /// </summary>
        public double Availability { get; set; }

        /// <summary>
        ///     Gets or sets the average e 2 e latency.
        /// </summary>
        public double AverageE2ELatency { get; set; }

        /// <summary>
        ///     Gets or sets the average server latency.
        /// </summary>
        public double AverageServerLatency { get; set; }

        /// <summary>
        ///     Gets or sets the client other error.
        /// </summary>
        public long ClientOtherError { get; set; }

        /// <summary>
        ///     Gets or sets the client timeout error.
        /// </summary>
        public long ClientTimeoutError { get; set; }

        /// <summary>
        ///     Gets or sets the network error.
        /// </summary>
        public long NetworkError { get; set; }

        /// <summary>
        ///     Gets or sets the percent authorization error.
        /// </summary>
        public double PercentAuthorizationError { get; set; }

        /// <summary>
        ///     Gets or sets the percent client other error.
        /// </summary>
        public double PercentClientOtherError { get; set; }

        /// <summary>
        ///     Gets or sets the percent network error.
        /// </summary>
        public double PercentNetworkError { get; set; }

        /// <summary>
        ///     Gets or sets the percent server other error.
        /// </summary>
        public double PercentServerOtherError { get; set; }

        /// <summary>
        ///     Gets or sets the percent success.
        /// </summary>
        public double PercentSuccess { get; set; }

        /// <summary>
        ///     Gets or sets the percent throttling error.
        /// </summary>
        public double PercentThrottlingError { get; set; }

        /// <summary>
        ///     Gets or sets the percent timeout error.
        /// </summary>
        public double PercentTimeoutError { get; set; }

        /// <summary>
        ///     Gets or sets the sas authorization error.
        /// </summary>
        public long SASAuthorizationError { get; set; }

        /// <summary>
        ///     Gets or sets the sas client other error.
        /// </summary>
        public long SASClientOtherError { get; set; }

        /// <summary>
        ///     Gets or sets the sas client timeout error.
        /// </summary>
        public long SASClientTimeoutError { get; set; }

        /// <summary>
        ///     Gets or sets the sas network error.
        /// </summary>
        public long SASNetworkError { get; set; }

        /// <summary>
        ///     Gets or sets the sas server other error.
        /// </summary>
        public long SASServerOtherError { get; set; }

        /// <summary>
        ///     Gets or sets the sas server timeout error.
        /// </summary>
        public long SASServerTimeoutError { get; set; }

        /// <summary>
        ///     Gets or sets the sas success.
        /// </summary>
        public long SASSuccess { get; set; }

        /// <summary>
        ///     Gets or sets the sas throttling error.
        /// </summary>
        public long SASThrottlingError { get; set; }

        /// <summary>
        ///     Gets or sets the server other error.
        /// </summary>
        public long ServerOtherError { get; set; }

        /// <summary>
        ///     Gets or sets the server timeout error.
        /// </summary>
        public long ServerTimeoutError { get; set; }

        /// <summary>
        ///     Gets or sets the success.
        /// </summary>
        public long Success { get; set; }

        /// <summary>
        ///     Gets or sets the throttling error.
        /// </summary>
        public long ThrottlingError { get; set; }

        /// <summary>
        ///     Gets or sets the time.
        /// </summary>
        public DateTimeOffset Time { get; set; }

        /// <summary>
        ///     Gets or sets the total billable requests.
        /// </summary>
        public long TotalBillableRequests { get; set; }

        /// <summary>
        ///     Gets or sets the total egress.
        /// </summary>
        public long TotalEgress { get; set; }

        /// <summary>
        ///     Gets or sets the total ingress.
        /// </summary>
        public long TotalIngress { get; set; }

        /// <summary>
        ///     Gets or sets the total requests.
        /// </summary>
        public long TotalRequests { get; set; }

        /// <summary>
        ///     Gets or sets the transaction type.
        /// </summary>
        public TransactionTypeEnum TransactionType { get; set; }

        #endregion
    }
}